import Map from 'ol/Map';
import View from 'ol/View';
import { TIAN_KEY } from '@/config'
import { createTileLayer } from './tileLayer';
import { defaults as defaultControls, MousePosition, OverviewMap, ScaleLine } from 'ol/control';

// 图层地址
export const url = {
  gaode_img: 'https://wprd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7&ltype=11', // 高德地图影像
  gaode_vec: 'https://webrd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}', // 高德地图矢量
  gaode_labels: 'https://webrd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}', // 高德地图注记
  tianditu_img: `http://t{0-7}.tianditu.gov.cn/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${TIAN_KEY}`, // 天地图影像
  tianditu_vec: `http://t{0-7}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${TIAN_KEY}`, // 天地图矢量
  tianditu_cva: `http://t{0-7}.tianditu.gov.cn/cva_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${TIAN_KEY}`, // 天地图矢量注记
}

// 默认配置（可被覆盖）
const defaultConfig = {
  target: 'map',
  layers: [
    createTileLayer('tianditu_vec', url.tianditu_vec, {}),
    createTileLayer('tianditu_cva', url.tianditu_cva, { zIndex: 99 })
  ],
  view: new View({
    center: [114.30, 30.50],
    zoom: 8,
    projection: 'EPSG:4326'
  }),
  controls: defaultControls({
    zoom: false, // 禁用缩放控件
    rotate: false, // 禁用旋转控件,
    attribution: false
  }).extend([
    new ScaleLine(), // 添加比例尺控件
    // new OverviewMap({
    //   collapsed: false,
    //   layers: [
    //     createTileLayer('tianditu_vec', url.tianditu_vec, {}),
    //     createTileLayer('tianditu_cva', url.tianditu_cva, { zIndex: 99 })
    //   ],
    // })  // 鷹眼控件
    new MousePosition({ className: 'mousPos' })
  ])
};

/**
 * 创建 OpenLayers 地图实例
 * @param {Object} customConfig 自定义配置（可选）
 * @returns {import('ol/Map').default} 地图实例
 */
export function createMap(customConfig = {}) {
  return new Map({
    ...defaultConfig,
    ...customConfig
  });
}